const MAX_WORDS_NUM = 140 // 输入文字最大的个数
const MAX_IMG_NUM = 9
let content = '' // 输入文字的内容
let userInfo = {} // 用户信息

const db = wx.cloud.database()
Page({
  data: {
    wordsNum: 0, // 输入文字的个数
    footerBottom: 0, // 
    images: [],
    selectPhoto: true // 添加图片按钮是否显示
  },

  onLoad(options) {
    userInfo = options
  },
  onInput(e) {
    let wordsNum = e.detail.value.length
    content = e.detail.value
    if (wordsNum >= MAX_WORDS_NUM) {
      wordsNum = `最大数字为${MAX_WORDS_NUM}`
    }
    this.setData({
      wordsNum
    })
  },
  // 聚焦时触发
  onFocus(e) {
    // 模拟器获取的键盘高度为 0
    this.setData({
      footerBottom: e.detail.height
    })
  },
  // 失去焦点触发
  onBlur() {
    this.setData({
      footerBottom: 0
    })
  },
  // 选择图片
  onChooseImage() {
    let max = MAX_IMG_NUM - this.data.images.length
    wx.chooseImage({
      count: max, // 最多可以选择的图片张数(需要动态处理)
      sizeType: ['original', 'compressed'], // 原图、压缩图
      sourceType: ['album', 'camera'], // 相册选图、使用相机
      success: res => {
        this.setData({
          images: this.data.images.concat(res.tempFilePaths) // 再次选择不能覆盖以前的 
        })
        // 还能再选几张图片
        max = MAX_IMG_NUM - this.data.images.length
        this.setData({
          selectPhoto: max <= 0 ? false : true
        })
      }
    })
  },
  // 删除图片
  onDelImage(e) {
    const index = e.currentTarget.dataset.index
    this.data.images.splice(index, 1)
    this.setData({
      images: this.data.images,
      selectPhoto: this.data.images.length < MAX_IMG_NUM ? true : false // 小于 9 张图片, 显示添加按钮
    })
  },
  // 图片预览
  onPreviewImage(e) {
    wx.previewImage({
      current: e.currentTarget.dataset.imageUrl,
      urls: this.data.images, // 需要预览的图片 http 链接
    })
  },
  // 发布
  onSend() {
    let promiseArr = []
    let fileIds = []

    if (content.trim() === '') {
      wx.showModal({
        title: '请输入内容',
        content: '',
      })
      return
    }

		wx.showLoading({
			title: '拼命发布中...',
			mask: true
		})

    // 图片上传(只能单张图片上传)
    for (let i = 0; i < this.data.images.length; i++) {
      let item = this.data.images[i]
      // 文件扩展名
      let suffix = /\.\w+$/.exec(item)[0]
      let p = new Promise((resolve, reject) => {
        // 图片上传云存储
        wx.cloud.uploadFile({
          cloudPath: `blog/${Date.now()}-${Math.random()}${suffix}`, // 名字不能重复，重复会覆盖以前的图片
          filePath: item,
          success: res => {
            fileIds = fileIds.concat(res.fileID)
						resolve(res.fileID)
          },
          fail: err => {
            console.error(err)
            reject(err)
          }
        })
      })
      promiseArr.push(p)
    }

    // 存储到云数据库中
    Promise.all(promiseArr).then(res => {
      db.collection('blog').add({
        data: {
          ...userInfo,
          content,
          img: fileIds,
          createTime: db.serverDate(), // 服务器时间
        }
      }).then(res => {
				wx.hideLoading()
				wx.showToast({
					title: '发布成功',
				})

				// 返回到blog页面，并刷页面
				wx.navigateBack()
				const pages = getCurrentPages()
				const prevPage = pages[pages.length - 2]
				prevPage.onPullDownRefresh()
			}).catch(err => {
				wx.hideLoading()
				console.error(err)
			})
    })
  }
})